package com.fjb.service.product;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fjb.common.entity.JsonPagesResult;
import com.fjb.common.entity.JsonResult;
import com.fjb.common.entity.JsonTotalResult;
import com.fjb.common.entity.PageQuery;
import com.fjb.common.entity.TotalResult;
import com.fjb.pojo.product.ProductInfo;
import com.fjb.pojo.product.query.ProductInfoQuery;
import com.fjb.pojo.product.vo.ProductInfoPageVo;

/**
 * <p>
 * 产品信息 服务类
 * </p>
 *
 * @author hemiao
 * @since 2019-12-22
 */
public interface ProductInfoService extends IService<ProductInfo> {
	
	/**
	 * @Description首页产品查询
	 * @param productInfoQuery
	 * @param pageQuery
	 * @return
	 * TotalResult<List<ProductInfoPageVo>>
	 * @exception:
	 * @author: hemiao
	 * @time:2020年1月31日 下午3:26:57
	 */
	TotalResult<List<ProductInfoPageVo>> selectIndexList(ProductInfoQuery productInfoQuery, PageQuery pageQuery);
	
	/**
	 * @Description:分页列表查询
	 * @param productInfoQuery
	 * @param pageQuery
	 * @return
	 * JsonTotalResult<List<ProductInfoPageVo>>
	 * @exception:
	 * @author: hemiao
	 * @time:2020年1月29日 下午8:29:06
	 */
	JsonTotalResult<List<ProductInfoPageVo>> selectPageList(ProductInfoQuery productInfoQuery, PageQuery pageQuery);
	
	/**
	 * @Description:分页列表查询 获得总页数
	 * @param pageQuery
	 * @param productQuery
	 * @return
	 * JsonPagesResult<List<ProductInfoPageVo>>
	 * @exception:
	 * @author: hemiao
	 * @time:2020年2月11日 下午11:08:01
	 */
	JsonPagesResult<List<ProductInfoPageVo>> selectPagesList(PageQuery pageQuery, ProductInfoQuery productQuery);
	
	/**
	 * @Description:添加产品
	 * @param pi
	 * @param attrName
	 * @return
	 * JsonResult<Integer>
	 * @exception:
	 * @author: hemiao
	 * @time:2020年2月16日 下午6:26:47
	 */
	JsonResult<Integer> addInfo(ProductInfo pi,String attrName);
	
	/**
	 * @Description:搜索商品列表
	 * @param infoQuery
	 * @param pageQuery
	 * @return
	 * JsonPagesResult<List<ProductInfoPageVo>>
	 * @exception:
	 * @author: hemiao
	 * @time:2020年2月22日 下午9:45:17
	 */
	JsonPagesResult<List<ProductInfoPageVo>> selectSearchPageList(ProductInfoQuery infoQuery,PageQuery pageQuery);
	
	/**
	 * @Description:根据产品id查询
	 * @param productId
	 * @return
	 * ProductInfoPageVo
	 * @exception:
	 * @author: hemiao
	 * @time:2020年2月22日 下午9:45:03
	 */
	ProductInfoPageVo selectGetOneById(Integer productId);
	
	/**
	 * @Description:获得产品卖家手机号
	 * @param mainUserId
	 * @param userId
	 * @param productId
	 * @return
	 * JsonResult<String>
	 * @exception:
	 * @author: hemiao
	 * @time:2020年2月24日 下午9:02:34
	 */
	JsonResult<String> getProductPhone(Integer mainUserId,Integer userId,Integer productId);
	
	/**
	 * @Description:浏览次数加 1
	 * @param productId
	 * @return
	 * int
	 * @exception:
	 * @author: hemiao
	 * @time:2020年2月24日 下午9:42:05
	 */
	int updateViewCountAdd(Integer productId);
	
	/**
	 * @Description:产品信息修改
	 * @param pi
	 * @param attrName
	 * @return
	 * JsonResult<Integer>
	 * @exception:
	 * @author: hemiao
	 * @time:2020年2月29日 下午5:29:51
	 */
	JsonResult<Integer> updateInfo(ProductInfo pi, String attrName);
	
	/**
	 * @Description:查询我的产品列表
	 * @param pageQuery
	 * @param productQuery
	 * @return
	 * JsonPagesResult<List<ProductInfoPageVo>>
	 * @exception:
	 * @author: hemiao
	 * @time:2020年3月1日 下午4:28:29
	 */
	JsonPagesResult<List<ProductInfoPageVo>> selectMyPagesList(PageQuery pageQuery, ProductInfoQuery productQuery);

}
